package dongshi.daddy.facade;

public class OnOffFacade {
    // 使用接口定义引用，满足依赖倒置原则
    private /*KitchenOnOff*/ OnOff kitchenOnOff;
    // 使用接口定义引用，满足依赖倒置原则
    private /*SittingRoomOnOff*/ OnOff sittingRoomOnOff;
    // 使用接口定义引用，满足依赖倒置原则
    private /*WcOnOff*/ OnOff wcOnOff;

    public OnOffFacade() {
        // 创建相关区域的开关类
        this.kitchenOnOff = new KitchenOnOff();
        this.sittingRoomOnOff = new SittingRoomOnOff();
        this.wcOnOff = new WcOnOff();
    }

    // 关闭厕所灯
    public void turnOffWcLamp() {
        this.wcOnOff.off();
    }

    // 注意：该方法就体现了门面的真正价值，用户只需要知道要关闭厕所灯和客厅灯时调用该方法即可，而不需要知道厕所灯子系统和客厅灯子系统的存在，降低了使用者的复杂度
    // 关闭厕所灯,客厅灯
    public void turnOffWcAndSittingRoomLamp() {
        this.wcOnOff.off();
        this.sittingRoomOnOff.off();
    }

    // 注意：该方法就体现了门面的真正价值，用户只需要知道要关闭厕所灯和客厅灯时调用该方法即可，而不需要知道都有哪些灯子系统的存在，降低了使用者的复杂度
    // 关闭所有区域的灯
    public void turnOffAllLamp() {
        this.wcOnOff.off();
        this.sittingRoomOnOff.off();
        this.kitchenOnOff.off();
    }
}
